//
//  YSTimeUtil.h
//  YSDH
//
//  Created by 王建都 on 2017/9/7.
//  Copyright © 2017年 熊小辉. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 时间相关的Util
 */
@interface YSTimeUtil : NSObject

/**
 获取当前时间戳

 @return 当前时间戳
 */
+(NSTimeInterval)getCurrentTick;

/**
 获取当前时间（yyyy-MM-dd HH:mm:ss）

 @return 获取当前时间
 */
+(NSString *)getCurrentTime;

/**
 获取今天的日期(yyyy-MM-dd)

 @return 获取今天的日期
 */
+ (NSString*)getCurrentDate;

/**
 获取当前日期

 @param format 格式（eg:yyyy-MM-dd,yyyy.MM.dd，默认yyyy-MM-dd）
 @return 返回当前日期
 */
+ (NSString*)getCurrentDate:(NSString*)format;

/**
 获取本周日期（周一开始）
 
 @param format 时间格式（eg:yyyy-MM-dd,yyyy.MM.dd，默认yyyy-MM-dd）
 @return 返回本周日期（format - format）
 */
+ (NSString*)getCurrentWeek:(NSString *)format;

/**
 获取本月日期（1号开始）
 
 @param format 时间格式（eg:yyyy-MM-dd,yyyy.MM.dd，默认yyyy-MM-dd）
 @return 返回本月日期（format - format）
 */
+ (NSString*)getCurrentMonth:(NSString *)format;

/**
 获取本年日期（1月1号开始）
 
 @param format 时间格式（eg:yyyy-MM-dd,yyyy.MM.dd，默认yyyy-MM-dd）
 @return 返回本年日期（format - format）
 */
+ (NSString*)getCurrentYear:(NSString *)format;

/**
 获取当前年份
 
 @return 当前年份
 */
+(NSString *)getCurrentYear;


/**
 获取时间字符串

 @param timeInterval 时间戳
 @param fromat 格式化样式
 @return 时间的串
 */
+ (NSString*)timeStrWith:(NSTimeInterval)timeInterval format:(NSString*)fromat;


/**
 获取时间字符串
 
 @param timeInterval 时间戳 （格式：今天： 13:26 , 其它日期: 2017/11/21）
 @return 时间的串
 */
+ (NSString*)timeStrWith:(NSTimeInterval)timeInterval;
/**
 获取某年某月的天数
 
 @param year 年份
 @param month 月份
 @return 天数
 */
+(NSInteger)howManyDaysInThisYear:(NSInteger)year withMonth:(NSInteger)month;

/**
 根据时间串获取时间戳
 
 @param string 时间串
 @return 返回时间戳
 */
+ (NSTimeInterval)timeStmpFromYMDHMS:(NSString*)string;

/**
 根据时间串获取时间（NSDate）
 
 @param timeSting 时间串
 @param format 时间格式
 @return NSDate
 */
+(NSDate*)dateWithTimeString:(NSString*)timeSting format:(NSString*)format;

/**
 获取当前时间，x年x月x天后的时间
 
 @param year 年数
 @param month 月数
 @param day 天数
 @return 新的时间串
 */
+(NSString*)timeStringAfter:(NSInteger)year month:(NSInteger)month day:(NSInteger)day format:(NSString*)format;

/**
 获取date，x年x月x天后的时间
 
 @param year 年数
 @param month 月数
 @param day 天数
 @param format 时间格式
 @return 新的时间串
 */
+(NSString*)timeStringAfter:(NSString*)date year:(NSInteger)year month:(NSInteger)month day:(NSInteger)day format:(NSString*)format;

/**
 时间time1，time2大小比较

 @param time1 时间1
 @param time2 时间2
 @param dataFormat 时间格式
 @return 比较结果
 */
+(NSComparisonResult)compareTime:(NSString*)time1 time:(NSString*)time2 format:(NSString*)dataFormat;

/**
 获取星期几（周日是第一天）
 
 @param dayOfWeek 第几天
 @return 星期X
 */
+(NSString*)weekdayStr:(NSInteger)dayOfWeek;

/**
 获取一天时间点的所在时段
 
 @param time 小时
 @param minute 分钟
 */
+ (NSString *)getPeriodOfTime:(NSInteger)time withMinute:(NSInteger)minute;

/**
 获取beginTime和endTime的时间差
 
 @param beginTime 开始时间
 @param endTime 结束时间
 @param dataFormat 时间格式
 */
+ (NSTimeInterval)getIntervalBetweenTime:(NSString*)beginTime endTime:(NSString*)endTime format:(NSString*)dataFormat;

/**
 获取当前时间到和endTime的时间差
 
 @param endTime 结束时间
 @param dataFormat 时间格式
 */
+ (NSTimeInterval)getIntervalToTime:(NSString*)endTime format:(NSString*)dataFormat;


/**
 判断是否是今天

 @param timeInterval 时间戳
 @return 是否是今天
 */
+ (BOOL)isToday:(NSTimeInterval)timeInterval;

+(NSString*)getTimeStringWithDate:(NSDate*)date format:(NSString*)format;

/**
 将某个时间戳转化成时间
 
 @param timestamp 时间戳
 @param format 时间格式
 */
+(NSString *)timestampSwitchTime:(NSInteger)timestamp andFormatter:(NSString *)format;

/**
 获取当天零点的时间(2021-5-31 00:00)
 
 @param hour (传0)
 @param minute  (传0)
 */
+ (NSString *)getTime: (NSInteger)hour andMinute:(NSInteger)minute;

/**
 将某个时间戳转化成时间 返回周几
 
 @param inputDate 传入的NSDate类型 返回周几
 */
+ (NSString *)weekdayStringFromDate:(NSDate*)inputDate;

/**
 将某个时间转成时间戳 (2021-06-10 17:22:41 转成 时间戳 )
 
 @param theTime 传入2021-06-10 17:22:41
 */
+ (NSString *)cTimestampFromString:(NSString *)theTime;


/**
 将某个时间转成时间戳 (2021/06/10 17:22:41 转成 时间戳 )
 
 @param theTime 传入2021/06/10 17:22:41
 */
+ (NSString *)cTimestampFromTwoString:(NSString *)theTime;


/**
 将某个时间转成时间戳 (2021-06-10转成 时间戳 )
 
 @param yearMonthDayTime 传入2021-06-10
 */
+ (NSString *)cTimestampFromYearMonthDayString:(NSString *)yearMonthDayTime;


/**
 获取周几
 
 @param timeStamp 时间戳(秒为单位)
 */
+ (NSString*)weekdayStringWithFromDate:(NSString *)timeStamp;


/**
 获取日前（1.当天的消息，只显示该消息的时、分
         2.昨日的消息，显示为“昨天”
         3.昨日之前（不包括昨日），本周一（包括本周一）之后的消息，显示为“星期几”  4.本周之前的消息，显示为年/月/日  例：2021/11/19）
 
 @param timeStamp 传入时间戳(秒为单位)
 */
+ (NSString *)getNoticeDate:(NSString *)timeStamp;


/**
 判断某个时间是不是属于本周
 
 @param toDate  NSDate数据
 */
+ (BOOL)isSameWeekWithDate:(NSDate *)toDate;


/**
 *  NSDate转时间戳
 *
 *  @param date 字符串时间
 *
 *  @return 返回时间戳
 */
+ (NSString *)cTimestampFromDate:(NSDate *)date;

@end
